﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Sisco.AplicacionEscritorio.Util;

namespace Sisco.AplicacionEscritorio.Equipo
{
    public partial class ModificarEquipo : Form
    {
        private AccesoDatos.USUARIO usuarioSistema;

        public ModificarEquipo()
        {
            InitializeComponent();
        }

        public ModificarEquipo(AccesoDatos.USUARIO usuariosistema) : this()
        {
            usuarioSistema = usuariosistema;
        }

        private void btnBuscar_Click(object sender, EventArgs e)
        {
            FormularioBuscar formBuscarEquipo = new FormularioBuscar("Equipo");
            formBuscarEquipo.ShowDialog(this);

            AccesoDatos.EQUIPO selectedEquipo = formBuscarEquipo.ObjetoBuscado as AccesoDatos.EQUIPO;

            if (selectedEquipo != null)
            {
                gbDatosEquipo.Enabled = true;
                btnAgregar.Enabled = true;

                txtEquipo.Tag = selectedEquipo;
                txtEquipo.Text = string.Format("{0} - {1} - {2}", selectedEquipo.MARCA.Trim(), selectedEquipo.MODELO.Trim(), selectedEquipo.SERIE.Trim());

                cmbTipoEquipo.SelectedIndex = cmbTipoEquipo.Items.IndexOf(cmbTipoEquipo.Items.Cast<AccesoDatos.TIPOEQUIPO>().SingleOrDefault(x => x.ID.Equals(selectedEquipo.IDTIPOEQUIPO)));
                txtMarca.Text = selectedEquipo.MARCA != null ? selectedEquipo.MARCA.Trim() : string.Empty;
                txtModelo.Text = selectedEquipo.MODELO != null ? selectedEquipo.MODELO.Trim() : string.Empty;
                txtSerieEquipo.Text = selectedEquipo.SERIE != null ? selectedEquipo.SERIE.Trim() : string.Empty;
            }
        }

        private void ModificarEquipo_Load(object sender, EventArgs e)
        {
            ListarTipoEquipo();
        }

        private void ListarTipoEquipo()
        {
            LogicaNegocio.TipoEquipoBLL tipoEquipoBLL = new LogicaNegocio.TipoEquipoBLL();
            cmbTipoEquipo.DataSource = tipoEquipoBLL.Listar();
            cmbTipoEquipo.ValueMember = "ID";
            cmbTipoEquipo.DisplayMember = "NOMBRETIPO";
            cmbTipoEquipo.SelectedIndex = -1;
        }

        private void btnCerrar_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnAgregar_Click(object sender, EventArgs e)
        {
            bool correcto = false;
            bool correcto1 = false;

            if (txtEquipo.Tag != null)
	        {
		        if (cmbTipoEquipo.SelectedIndex >= 0)
                {
                    if (!string.IsNullOrWhiteSpace(txtMarca.Text))
                    {
                        if (!string.IsNullOrWhiteSpace(txtModelo.Text))
                        {
                            if (!string.IsNullOrWhiteSpace(txtSerieEquipo.Text))
                            {
                                correcto = true;
                            }
                            else
                            {
                                MessageBox.Show(this, "Ingrese la serie del equipo", "Sisco", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                            }
                        }
                        else
                        {
                            MessageBox.Show(this, "Ingrese el modelo del equipo", "Sisco", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                        }
                    }
                    else
                    {
                        MessageBox.Show(this, "Ingrese la marca del equipo", "Sisco", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                    }
                }
                else
                {
                    MessageBox.Show(this, "Ingrese el tipo del equipo", "Sisco", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                } 
	        }
            else
            {
                MessageBox.Show(this, "Seleccione el equipo", "Sisco", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
            }

            if (correcto)
            {
                LogicaNegocio.EquipoBLL equipoBLL = new LogicaNegocio.EquipoBLL();
                List<AccesoDatos.EQUIPO> lista = equipoBLL.BuscarEquipo(int.Parse(cmbTipoEquipo.SelectedValue.ToString()), txtMarca.Text, txtSerieEquipo.Text);

                if (lista.Count == 0)
                {
                    correcto1 = true;
                }
                else
                {
                    MessageBox.Show(this, "Ya existe un equipo con los datos ingresados", "Sisco", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                }
            }

            if (correcto1)
            {
                //actualiza el equipo
                LogicaNegocio.EquipoBLL equipoBLL = new LogicaNegocio.EquipoBLL();

                AccesoDatos.EQUIPO updEquipo = new AccesoDatos.EQUIPO()
                {
                    IDTIPOEQUIPO = int.Parse(cmbTipoEquipo.SelectedValue.ToString()),
                    TIPOEQUIPO = (cmbTipoEquipo.SelectedItem as AccesoDatos.TIPOEQUIPO).NOMBRETIPO.Trim(),
                    MARCA = txtMarca.Text.Trim(),
                    MODELO = txtModelo.Text.Trim(),
                    SERIE = txtSerieEquipo.Text.Trim(),
                    ELIMINADO = 0,
                    FECHAMODIFICACION = DateTime.Now,
                    MODIFICADOPOR = usuarioSistema.NOMBRECOMPLETO != null ? usuarioSistema.NOMBRECOMPLETO.Trim() : string.Empty
                };

                AccesoDatos.EQUIPO selectedEquipo = txtEquipo.Tag as AccesoDatos.EQUIPO;

                int equipoActualizado = equipoBLL.Modificar(selectedEquipo, updEquipo);

                if (equipoActualizado > 0)
                {
                    MessageBox.Show("Equipo actualizado", "Sisco", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);

                    this.LimpiarFormulario();
                    gbDatosEquipo.Enabled = false;
                    btnAgregar.Enabled = false;
                }
            }
        }

        private void LimpiarFormulario()
        {
            txtEquipo.ResetText();
            txtEquipo.Tag = null;
            cmbTipoEquipo.DataSource = null;
            ListarTipoEquipo();
            txtMarca.ResetText();
            txtModelo.ResetText();
            txtSerieEquipo.ResetText();
        }
    }
}
